package com.xunshibao.service.message;

import java.util.List;

import com.xunshibao.entity.message.MsgReply;

public interface MessageService {

	/**
	 * 发送站内消息
	 * @param sid 发件人编号
	 * @param rids 收件人编号数组
	 * @param title 标题
	 * @param content 内容
	 * @return 发送成功返回true，失败返回false
	 */
    public boolean sendUserMessage(Long sid, List<Long> rids, String senderName, String title, String content);
    
    /**
     * <pre>发送系统消息</pre>
     * 
     * @param rids 收件人编号数组
     * @param title 标题
     * @param content 内容
     * @return 发送成功返回true，失败返回false
     */
    public boolean sendSystemMessage(List<Long> rids, String title, String content);

    /**
     * 取得用户站内信收件箱列表
     * @param uid 用户编号
     * @param pageNo 页码
     * @param pageSize 页面大小
     * @return 用户站内信列表
     */
    MessageDRO listUserInbox(Long uid, int pageNo, int pageSize);
    
    /**
     * <pre>取得用户的发件箱信息列表</pre>
     * @param uid 用户编号
     * @param pageNo 页码
     * @param pageSize 页面大小
     * @return 用户站内信列表
     */
    MessageDRO listUserOutbox(Long uid, int pageNo, int pageSize);
    
    /**
     * <pre>取得用户的系统消息列表</pre>
     * @param uid 用户编号
     * @param pageNo 页码
     * @param pageSize 页面大小
     * @return
     */
    MessageDRO listSystem(Long uid, int pageNo, int pageSize);
    
    /**
     * 回复消息
     * @param rid relations表中的id字段
     * @param uid 当前用户的编号
     */
    public List<MsgReply> readMsg(Long rid, Long uid, int pmnum);
    
    /**
     * 回复消息，
     * TODO 需要判断该消息是否为系统消息，如果是系统消息将不能回复。
     * @param mid 消息编号
     * @param uid 当前用户编号
     * @param uid 当前用户名
     * @param uid 消息内容
     * @return
     */
    public boolean replyMsg(Long mid, Long uid, String username, String content);
    
    public boolean delete(Long rid, Long uid);
    
	public Long getUserIdByName(String username);
}
